One or more aspects relate, in general, to multiprocessing computing environments, and in particular, to transactional processing within such computing environments.
In a computing environment that implements a transactional execution facility (also known as “transactional memory”), a transaction provides the means by which a program can issue a plurality of instructions and the storage accesses of those instructions either (a) appear to occur as a single concurrent operation, or (b) do not appear to occur, as observed by other central processing units (CPUs) and the input/output (I/O) subsystem. A transactional access made by one CPU is said to conflict with either (a) a transactional or nontransactional access made by another CPU, or (b) a nontransactional access made by the I/O subsystem, if both accesses are to any location within the same cache line, and one or both of the accesses is a store.
The current nature of conflict detection has made it exceedingly difficult, if not impossible, for a program executing on one CPU to influence the execution of a program executing on a different CPU when one or both CPUs is in the transactional-execution mode. Any store to a memory location that is accessed by both CPUs is likely to be treated as a conflict situation, resulting in the aborting of transactional execution.